home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 June: Reference Library / Dev.CD Jun 99 RL Disk 1.toast / What's New / Development Kits / Mac_OS_USB_DDK_v1.2 / Examples / USBModem / Modem.h next >
Encoding:
C/C++ Source or Header  |  1999-04-15  |  4.1 KB  |  173 lines  |  [TEXT/CWIE]

  1. /*
  2.     File:        Modem.h
  3.  
  4.     Contains:    Definitions for the USB Modem Driver
  5.  
  6.     Version:    xxx put version here xxx
  7.  
  8.  
  9.                 
  10.     Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  11.  
  12. */
  13.  
  14. #ifndef    _MODEM_
  15. #define    _MODEM_
  16.  
  17. #include <Serial.h>
  18. #include <USB.h>
  19.  
  20. #include "SerialShim.h"
  21.  
  22. // Debug stuff
  23.  
  24. #define DebugOn        0                        // This is the master switch (On > 0)
  25. #define LogOn        0                        // On > 0 (DebugOn must also be on)
  26. #define FullTrace    0                        // On > 0 Be careful with this as it traces everything (DebugOn must also be on)
  27.  
  28. #if (DebugOn > 0)
  29. #define DebugMessage(s)        DebugStr(s)
  30. #else
  31. #define DebugMessage(s)
  32. #endif
  33.  
  34. #if ((DebugOn > 0) && (LogOn > 0))
  35. #define LogData(x, y, z)    USBLogData(x, y, z)
  36. #else
  37. #define LogData(x, y, z)
  38. #endif
  39.  
  40. #if (DebugOn > 0)
  41. #define TraceMessage(x, s)    {if (FullTrace > 0) USBExpertStatus(0, s, 0); else if (x) USBExpertStatus(0, s, 0);}
  42. #else
  43. #define TraceMessage(x, s)
  44. #endif
  45.  
  46. #if (DebugOn > 0)
  47. #define StatusMessage(a, s, c)    USBExpertStatus(a, s, c)
  48. #else
  49. #define StatusMessage(a, s, c)
  50. #endif
  51.  
  52. #if (DebugOn > 0)
  53. #define noteError(s)    sp->errorString = s;
  54. #else
  55. #define noteError(s)
  56. #endif
  57.  
  58. //    Change these for other modems etc.
  59.  
  60. #define kUSBVendor        0x0000                            // ABC Modem company
  61. #define kUSBProduct     0x0000                            // A very fast modem
  62. #define kModemName        "\pUSB Modem"                    // Name registry name
  63.                                                         // The following three names will be made unique
  64.                                                         // by the shim if they are not
  65. #define kCRMName         "\pUSB"                            // CRM name
  66. #define kDRVRInName        "\p.UIn"                        // .In driver name
  67. #define kDRVROutName    "\p.UOut"                        // .Out driver name
  68.  
  69. //  USB stuff 
  70.  
  71. #define k5DataBits                5
  72. #define k6DataBits                6
  73. #define k7DataBits                7
  74. #define k8DataBits                8
  75.  
  76. #define k1StopBit                0
  77. #define k15StopBits                1
  78. #define k2StopBits                2
  79.  
  80. #define kNoParity                0
  81. #define kOddParity                1
  82. #define kEvenParity                2
  83. #define kMark                    3
  84. #define kSpace                    4
  85.  
  86. #define kDTROff                    0
  87. #define kRTSOff                    0
  88. #define kDTROn                    1
  89. #define kRTSOn                    2
  90.  
  91. #define kBreakOn                0xFFFF
  92. #define kBreakOff                0
  93.  
  94. #define kUSBDCD                    0x01
  95. #define kUSBDSR                    0x02
  96. #define kUSBBreakDetect            0x04
  97. #define kUSBRingSignal            0x08
  98. #define kUSBFramingErr            0x10
  99. #define kUSBParityErr            0x20
  100. #define kUSBHwOverRunErr        0x40
  101.  
  102. typedef struct{
  103.     UInt16    DTERate1;
  104.     UInt16    DTERate2;
  105.     UInt8    CharFormat;
  106.     UInt8    ParityType;
  107.     UInt8    DataBits;
  108.     } LineParms;
  109.     
  110. enum{
  111.     kSendEncapsulatedCommand = 0,
  112.     kGetEncapsulatedResponse = 1,
  113.     kSetCommFeature = 2,
  114.     kGetCommFeature = 3,
  115.     kClearCommFeature = 4,
  116.     kSetLineCoding = 0x20,
  117.     kGetLineCoding = 0x21,
  118.     kSetControlLineState = 0x22,
  119.     kSendBreak = 0x23,
  120.     };
  121.     
  122. enum{
  123.     kResponseAvailable = 1,
  124.     kSerialState = 0x20,
  125.     };
  126.  
  127. enum
  128. {
  129.     kBuiltInBufferSize    =    1024,
  130.     kMaxBaudRate        =    115200,
  131. };
  132.  
  133. // Global data structure
  134.  
  135. typedef    struct    ShimSerialGlobals
  136. {
  137.     //    input buffers
  138.     UInt8                builtInBuffer[kBuiltInBufferSize];    //    default input buffer
  139.     UInt8                 *inBufPtr;                            //    pointer to current input buffer
  140.     UInt16                inBufLen;                            //    length of said buffer
  141.     UInt16                inBufStartIndex;                    //    circular queue indexes
  142.     UInt16                inBufEndIndex;
  143.     
  144.     //    serial driver state
  145.     
  146.     UInt8                xOnOffChar;            //    an xon or xoff char to be sent
  147.     UInt8                lenParStop;            //    length, parity, stop bits
  148.     UInt8                peChar;                //    parity error replacement character
  149.     UInt8                peAltChar;            //    parity error alternate replacement character
  150.     UInt32                baudRate;            //    actual baud rate value i.e. 19200
  151.     SerShk                serShk;                //    handshake record (see inside mac, vol ii, serial drivers
  152.     SerStaRec            serStat;            //    serial status record (see inside mac, vol ii, serial drivers)
  153.     
  154.     //    miscellaneous
  155.     
  156.     ParmBlkPtr            pbIn;                //    current prime read request
  157.     ParmBlkPtr            pbOut;                //    current prime write request
  158.     ShimRefNum            ShimRef;            //    save the shim's reference number
  159.     Boolean                openSession;        //  only allow one open session
  160.     CFragConnectionID    ConnID;                //    connection to the shim
  161.     
  162.     //    Install and remove CFM routines
  163.     
  164.     OSErr                 (*ShimInstall) (SerialShimInterface IntBlk, ShimRefNum *ref);
  165.     OSErr                 (*ShimRemove) (ShimRefNum ref, Boolean forced);
  166.     void                 (*ShimComplete) (ShimRefNum ref, IOParam *pb);
  167.  
  168. } ShimSerialGlobals;
  169.  
  170. extern    ShimSerialGlobals    *gGlobals;
  171.  
  172. #endif
  173.